package com.wjc.wiki.job;

 import com.wjc.wiki.service.DocService;
 import com.wjc.wiki.util.SnowFlake;
 import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
 import org.slf4j.MDC;
 import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

 @Component
 public class DocJob {
     @Resource
     private DocService docService;

     @Resource
     private SnowFlake snowFlake;

    private static final Logger LOG = LoggerFactory.getLogger(DocJob.class);

    /**
     * 固定时间间隔，fixedRate单位毫秒
     */
//    @Scheduled(fixedRate = 1000)
//    public void simple() throws InterruptedException {
//        SimpleDateFormat formatter = new SimpleDateFormat("mm:ss");
//        String dateString = formatter.format(new Date());
//        Thread.sleep(2000);
//        LOG.info("每隔5秒钟执行一次： {}", dateString);
//    }

    /**
     * 自定义cron表达式跑批
     * 只有等上一次执行完成，下一次才会在下一个时间点执行，错过就错过
     *  每5分钟更新电子书信息
     */

    @Scheduled(cron = "0 1/5 * * * ?")
    public void cron()  {
        // 增加日志流水号
        MDC.put("LOG_ID", String.valueOf(snowFlake.nextId()));

        LOG.info("==========定时更新电子书信息开始===========");
        long start=System.currentTimeMillis();
        docService.updateEbookInfo();
        LOG.info("定时更新电子书耗时: {}毫秒",System.currentTimeMillis()-start);
        LOG.info("==========定时更新电子书信息结束===========");
    }

 }
